package com.iwop.moto.utils.stringUtil;

import jxl.Workbook;
import jxl.write.*;
import jxl.write.biff.RowsExceededException;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

/**
 * Created by mobom on 2016/10/24.
 */
public class ExportUtil {
    public static void writeExcel(OutputStream os, String[] title, List lists,String sheetName) throws IOException, WriteException {
        WritableFont wfc = new WritableFont(WritableFont.ARIAL,16,WritableFont.BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE);
        WritableCellFormat wcfFC = new WritableCellFormat(wfc);
        // 创建可以写入的Excel工作薄(默认运行生成的文件在tomcat/bin下 )
        WritableWorkbook wwb = Workbook.createWorkbook(os);
        // 生成工作表,(name:First Sheet,参数0表示这是第一页)
        WritableSheet sheet = wwb.createSheet(sheetName, 0);
        // 开始写入第一行(即标题栏)
        sheet.setColumnView(0,20);
        sheet.setColumnView(1,20);
        sheet.setColumnView(2,20);
        sheet.setColumnView(3,20);
        sheet.setColumnView(4,30);
        sheet.setColumnView(5,20);
        sheet.setColumnView(6,30);
        sheet.setColumnView(7,30);
        sheet.setColumnView(8,30);
        for (int i=0; i<title.length; i++) {
            // 用于写入文本内容到工作表中去
            Label label = null;
            // 在Label对象的构造中指明单元格位置(参数依次代表列数、行数、内容 )
            label = new Label(i, 0, title[i],wcfFC);

            // 将定义好的单元格添加到工作表中
            sheet.addCell(label);
        }
        // 开始写入内容
        for (int row=0; row<lists.size(); row++) {
            // 获取一条(一行)记录
            List list = (List) lists.get(row);
            // 数据是文本时(用label写入到工作表中)
            for (int col=0; col<list.size(); col++) {
                String listvalue = (String)list.get(col);
                Label label = null;
                label = new Label(col, row+1, listvalue);
                sheet.addCell(label);
            }
        }
        // 写入数据
        wwb.write();
        // 关闭文件
        wwb.close();
        // 关闭输出流
        os.close();
    }
}
